package ru.chezclif.lern.conread;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import ru.chezclif.lern.conread.parser.PathDataInputProperties;
/**
 * Сохранение настроек из хранилища данных в ini файл
 * @author Vit
 *
 */
public class IniSaver implements PathDataInputProperties {
	@Override
	/**По параметру filePath находится\создается файл, в него записываются все настройки и комментарии
	 *@param filePath полный путь к оперируемому файлу
	 *@param propertyBuffer хранилище данных с настройками для записи в файл*/
	public void parseFile(String filePath, DataBuffer propertyBuffer) {
		Preconditions.notBlank(filePath);
		Preconditions.notNull(filePath);
		Preconditions.notNull(propertyBuffer);
		File propertyFile = new File(filePath);
		try {
			if (propertyFile.exists() == false) {
				propertyFile.createNewFile();
			}
			FileWriter writedFile = new FileWriter(propertyFile);
			BufferedWriter bufferForOut = new BufferedWriter(writedFile);
			bufferForOut.write(";" + propertyBuffer.getHeaderComment());
			bufferForOut.newLine();
			List<PropertyElements> listOfElements = propertyBuffer.getElements();
			for (PropertyElements singleElement : listOfElements) {
				bufferForOut.write(singleElement.getKey() + "=" + singleElement.getValue());
				bufferForOut.newLine();
			}
			bufferForOut.write(";" + propertyBuffer.getFooterComment());
			bufferForOut.newLine();
			bufferForOut.close();
		} catch (IOException e) {
			throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
		}
	}
}
